#include "Ligne.h"


void LigneInitialise (Ligne * ligne, const Grille * grille)
{
	int i;

	ligne->dimX = grille->dimX;
	ligne->tableau = (char*) malloc((ligne->dimX)*sizeof(char));
	ligne->tableau[0] = '#';
	for (i = 1 ; i< ligne->dimX; i++)
	{
		ligne->tableau[i] = '_';
	}

	ligne->pion = CreerPion();
	assert(ligne->pion != NULL);
}


void LigneEfface (Ligne * ligne)
{
    int i;
    for  (i=0; i<ligne->dimX; i++)
    {
        free(ligne->tableau);
    }
    ligne->tableau = NULL;
    ligne->dimX = 0;
    PionEfface(ligne->pion);
    ligne->pion = NULL;
}



void LigneModifie (Ligne * ligne, const char direction)
{
	int  *coordX = &(ligne->pion->coordX);
	if ( direction == 'g')
        {
		if (*coordX <= GetDimx(ligne) && *coordX > 0)
    		{
        		*coordX = *coordX - 1;
			SetLigne(ligne, *coordX, '#');
			SetLigne(ligne, *coordX + 1, '_');
        	}
		else
		{
			*coordX = 0;
			SetLigne(ligne, *coordX, '#');
		}
	}
	if ( direction == 'd')
        {
		if (*coordX < 7 && *coordX >= 0)
    		{
        		*coordX = *coordX + 1;
			SetLigne(ligne, *coordX, '#');
			SetLigne(ligne, *coordX - 1, '_');
        	}
		else
		{
			*coordX = GetDimx(ligne) - 1;
			SetLigne(ligne, *coordX, '#');
			SetLigne(ligne, *coordX + GetDimx(ligne)-1, '_');
		}
	}
}



void AffichePionDansLigne(Ligne * ligne)
{
    int i;
    for (i=0; i<(ligne->dimX); i++)
    {
        printf("%d", ligne->tableau[i]);
    }
}


char GetLigne (const Ligne * ligne, const int x)
{
	return ligne->tableau[x];
}



int GetDimx (const Ligne * ligne)
{
    return ligne->dimX;
}


void SetLigne (Ligne * ligne, const int x, const char valeur)
{
	ligne->tableau[x] = valeur;
}

